sed مخفف Stream Editor است و یک ابزار خط فرمانی
قدرتمند برای پردازش و ویرایش متن به صورت غیرتعاملی (Non-interactive) است.
-i تغییرات را مستقیماً روی فایل اعمال میکند.توضیح: گزینهها، دستور sed و نام فایل ورودی.
مهمترین کاربرد sed، جایگزینی متن با دستور s است.
s → دستور جایگزینی (Substitute)pattern → الگوی جستجوreplacement → متن جایگزین/ → جداکننده (میتواند هر کاراکتری باشد)
توضیح: اولین root در هر خط را با admin جایگزین میکند.
توضیح: g (global) یعنی همه موارد bash را در هر خط با sh جایگزین کن.
اگر الگوی شما شامل / باشد، میتوانید از جداکننده دیگری استفاده کنید:
| گزینه | توضیح | مثال |
|---|---|---|
-i |
ویرایش درونمکانی (In-Place) و اعمال تغییرات مستقیم روی فایل | sed -i 's/old/new/g' file.txt |
-i.bak |
ویرایش درونمکانی با ایجاد پشتیبان (با پسوند .bak) | sed -i.bak 's/old/new/g' file.txt |
-n |
خاموش کردن چاپ خودکار (فقط با p چاپ میکند) |
sed -n 's/old/new/p' file.txt |
-e |
اجرای چندین دستور sed | sed -e 's/old/new/' -e 's/foo/bar/' file.txt |
-f |
اجرای دستورات از یک فایل اسکریپت | sed -f script.sed file.txt |
-r یا -E |
استفاده از عبارات با قاعده توسعهیافته (ERE) | sed -r 's/[0-9]+/NUM/g' file.txt |
با دستور d میتوانید خطوط را حذف کنید.
حذف خط سوم فایل.
حذف خطوط ۲ تا ۵.
حذف خطوطی که شامل pattern هستند.
حذف خطوط خالی (^$ یعنی ابتدا و انتهای خط بدون هیچ کاراکتری).
با دستور p و گزینه -n میتوانید خطوط خاصی را نمایش دهید.
نمایش فقط خط سوم.
نمایش خطوط ۲ تا ۵.
نمایش فقط خطوطی که شامل error هستند.
میتوانید عملیات را روی خطوط خاص اعمال کنید.
فقط در خط سوم جایگزینی انجام بده.
در خطوط ۲ تا ۵ همه موارد old را با new جایگزین کن.
در خطوطی که شامل pattern هستند، جایگزینی انجام بده.
بدون -i، sed فقط خروجی را در ترمینال نشان میدهد و فایل اصلی تغییری نمیکند.
با -i تغییرات مستقیماً روی فایل اعمال میشود.
توضیح: بهروزرسانی فایل sshd_config برای اجازه دادن به ورود روت.
توضیح: قبل از اعمال تغییرات، یک پشتیبان از فایل با پسوند .bak ایجاد میکند.
میتوانید از متغیرهای Bash در sed استفاده کنید:
توجه: استفاده از دونقل قول (") به جای یونقل قول (') برای جایگزینی متغیرها.
| دستور | کاربرد |
|---|---|
sed 's/old/new/' file |
جایگزینی اولین old در هر خط |
sed 's/old/new/g' file |
جایگزینی همه موارد old در هر خط |
sed '3d' file |
حذف خط سوم |
sed '2,5d' file |
حذف خطوط ۲ تا ۵ |
sed '/pattern/d' file |
حذف خطوط حاوی pattern |
sed -n '3p' file |
نمایش فقط خط سوم |
sed -n '/pattern/p' file |
نمایش خطوط حاوی pattern |
sed -i 's/old/new/g' file |
ویرایش مستقیم فایل |
sed -i.bak 's/old/new/g' file |
ویرایش با ایجاد پشتیبان |
sed -e 's/old/new/' -e 's/foo/bar/' file |
اجرای چندین دستور |
sed -f script.sed file |
اجرای دستورات از فایل اسکریپت |
sed '3s/old/new/' file |
جایگزینی فقط در خط سوم |
توضیح: حذف فاصلههای ابتدای هر خط (Trim leading whitespace).
توضیح: حذف فاصلههای انتهای هر خط (Trim trailing whitespace).
توضیح: تبدیل همه حروف به بزرگ (Uppercase).
توضیح: تبدیل همه حروف به کوچک (Lowercase).
sed 's/old/new/' جایگزینی را امتحان کنید.sed -n '/pattern/p' خطوط خاصی را نمایش دهید.sed '/^$/d' حذف کنید.sed -i.bak یک فایل را ویرایش کنید و پشتیبان آن را بررسی کنید.sed -e دو دستور جایگزینی را همزمان اجرا کنید.